import { workflowApi } from './api'
import { isLoggedIn } from './auth'

// 轮询间隔（毫秒）
const POLLING_INTERVAL = 5 * 60 * 1000 // 5分钟

// 定时器ID
let pollingTimer: number | null = null

/**
 * 检查待办任务并更新红点
 */
export const checkPendingTasks = async () => {
  if (!isLoggedIn()) return
  
  try {
    const res = await workflowApi.getPendingApprovals({
      page: 1,
      limit: 1 // 只需要知道是否有待处理任务，不需要全部数据
    })       

    console.log(res)
    if (res.success && res.data && res.total) {
      const count = res.total || 0

      updateTabBarBadge(count)
    }
  } catch (error) {
    console.error('检查待办任务失败:', error)
  }
}

/**
 * 更新TabBar红点
 * @param count 待办任务数量
 */
export const updateTabBarBadge = (count: number) => {
  console.log('updateTabBarBadge', count)
  const todoTabIndex = 1 // 待办tab的索引，从0开始
  
  // 检查当前页面是否为TabBar页面
  const pages = getCurrentPages()
  const currentPage = pages[pages.length - 1]
  
  // 获取当前页面的路径
  const currentPath = currentPage?.route || ''
  
  // 定义TabBar页面路径（与pages.json中的tabBar.list配置一致）
  const tabBarPages = [
    'pages/home/home',
    'pages/todo/todo', 
    'pages/attendance/attendance',
    'pages/profile/profile'
  ]
  
  // 如果不是TabBar页面，直接返回，不执行TabBar操作
  if (!tabBarPages.includes(currentPath)) {
    console.log('当前页面不是TabBar页面，跳过TabBar badge更新')
    return
  }
  
  try {
    if (count > 0) {
      // 显示数字角标
      uni.setTabBarBadge({
        index: todoTabIndex,
        text: count.toString()
      })
    } else {
      // 移除角标
      uni.removeTabBarBadge({
        index: todoTabIndex
      })
    }
  } catch (error) {
    // 忽略TabBar操作错误
    console.log('TabBar badge update failed:', error)
  }
}

/**
 * 启动通知服务
 */
export const startNotificationService = () => {
  // 先停止已有的服务
  stopNotificationService()
  
  // 立即检查一次
  checkPendingTasks()
  
  // 设置定时检查
  pollingTimer = setInterval(checkPendingTasks, POLLING_INTERVAL) as unknown as number
}

/**
 * 停止通知服务
 */
export const stopNotificationService = () => {
  if (pollingTimer !== null) {
    clearInterval(pollingTimer)
    pollingTimer = null
  }
} 